home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 April / Macworld (1999-04).dmg / Serious Software / GrooveMaker demo / GrooveMaker Demo / Media / Synth.dxr / 00190_Field_buttare3.txt < prev    next >
Text File  |  1998-07-27  |  33KB  |  939 lines

  1. on markSynth
  2.   global gLastSynth,gFirstSynth,gLastSprite,gArp,gProg,gOn,gPosVolSynth,gPosPanSynth
  3.   global markerSynthList,synthList,paramList,folderSynthList
  4.   
  5.   if gOn and (folderSynthList <> []) and not(the visible of window "help") then
  6.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  7.     if the visible of sprite 76 then
  8.       pass
  9.     else
  10.       -- prende il click se non abbiamo gi√† marcato 99 synth, se la seq che sta suonando non √® gi√† nella markerSynthList e/o se √® cambiata anche solo nei parametri
  11.       set temp = [field "fieldSynth",gArp,gProg,gPosVolSynth,gPosPanSynth]
  12.       if (synthList <> []) and (getLast(markerSynthList) <> synthList or getLast(paramList) <> temp) and (count(markerSynthList) < 99) then
  13.         set the memberNum of sprite 61 to the number of member "marker"
  14.         updateStage
  15.         
  16.         -- si aggiorna la markerSynthList
  17.         set temp = []
  18.         repeat with i = 1 to count(synthList)
  19.           append temp,getAt(synthList,i)
  20.         end repeat
  21.         append markerSynthList,temp
  22.         
  23.         -- si aggiorna il visore
  24.         -- a visore ho ancora dei contenitori vuoti
  25.         set gLastSynth = gLastSynth + 1
  26.         if gLastSprite < 73 then
  27.           set the memberNum of sprite (gLastSprite + 1) to the number of member string(gLastSynth)
  28.           updateStage
  29.           if gFirstSynth = 0 then 
  30.             set gFirstSynth = integer(the name of member the memberNum of sprite 68)
  31.           end if
  32.           set gLastSprite = gLastSprite + 1
  33.           
  34.         else  
  35.           -- i contenitori sono gi√† tutti pieni quindi devono slittare tutti i numeri
  36.           set start = count(markerSynthList)
  37.           set the memberNum of sprite 73 to the number of member string(start)
  38.           repeat with i = 72 down to 68
  39.             set the memberNum of sprite i to the number of member string(start-(73-i))
  40.             updateStage
  41.           end repeat
  42.           set gFirstSynth = gFirstSynth + 1
  43.         end if
  44.         
  45.         -- si aggiorna la paramList
  46.         set temp = [field "fieldSynth",gArp,gProg,gPosVolSynth,gPosPanSynth]
  47.         append paramList,temp
  48.       end if 
  49.     end if
  50.   end if
  51. end 
  52. ****************************************************************
  53. on stopMovie
  54.   global gSwitch, gColor
  55.   
  56.   if ((the commandDown) and (the keyPressed = "q")) or(charToNum(the keyPressed) = 27) then
  57.     
  58.     if gSwitch then set the colorDepth = gColor
  59.     
  60.   end if
  61. end 
  62. ****************************************************************
  63. -- marker nota
  64. on mouseEnter
  65.   if the visible of window "Help" then tell window "help" to go to frame "synth14"
  66. end
  67.  
  68. on mouseLeave
  69.   if the visible of window "Help" then tell window "help" to go to frame "start"
  70. end
  71. ****************************************************************
  72. -- click su una nota della prima ottava
  73. on mouseUp
  74.   global gProg,gOn
  75.   global folderSynthList
  76.   
  77.   if gOn and (IKGetCurrentBeat() <> -1) and (folderSynthList <> []) and not(the visible of window "help") then
  78.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  79.     if the visible of sprite 76 then
  80.       pass
  81.     else
  82.       playNote 1    
  83.     end if
  84.   end if
  85. end
  86. ****************************************************************
  87. -- click su una nota della seconda ottava
  88. on mouseUp
  89.   global gProg,gOn
  90.   global folderSynthList
  91.   
  92.   if gOn and (IKGetCurrentBeat() <> -1) and (folderSynthList <> []) and not(the visible of window "help") then
  93.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  94.     if the visible of sprite 76 then
  95.       pass
  96.     else
  97.       playNote 2
  98.     end if
  99.   end if
  100. end
  101. ****************************************************************
  102. -- click su una nota della terza ottava
  103. on mouseUp
  104.   global gProg,gOn
  105.   global folderSynthList
  106.   
  107.   if gOn and (IKGetCurrentBeat() <> -1) and (folderSynthList <> []) and not(the visible of window "help") then
  108.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  109.     if the visible of sprite 76 then
  110.       pass
  111.     else
  112.       playNote 3
  113.     end if
  114.   end if
  115. end
  116. ****************************************************************
  117. -- click sul volume
  118. on mouseEnter
  119.   if the visible of window "Help" then tell window "help" to go to frame "synth2"
  120. end
  121.  
  122. on mouseLeave
  123.   if the visible of window "Help" then tell window "help" to go to frame "start"
  124. end
  125.  
  126.  
  127. on mouseDown
  128.   global gOn
  129.   global folderSynthList
  130.   
  131.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  132.   if gOn and not(the visible of sprite 76) and (folderSynthList <> []) and not(the visible of window "help") then
  133.     repeat while the mouseDown
  134.       set y = the mouseV
  135.       if y > 54 then set y = 54
  136.       if y < 9 then set y = 9
  137.       set the locV of sprite 45 to y
  138.       updateStage
  139.       
  140.       IKSynthVolume integer(128*(-y+54)/45)
  141.     end repeat
  142.   end if
  143. end
  144.  
  145. on mouseUp
  146.   global gOn,gPosVolSynth,gSynthSel
  147.   global folderSynthList
  148.   
  149.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  150.   if gOn and not(the visible of sprite 76) and (folderSynthList <> []) and not(the visible of window "help") then 
  151.     set gPosVolSynth = the locV of sprite 45
  152.     -- se c'√® l'hilite intorno ai marker sparisce
  153.     if gSynthSel then 
  154.       set the locH of sprite 74 to -20
  155.       set gSynthSel = 0
  156.     end if
  157.   end if
  158. end
  159. ****************************************************************
  160. -- click sul pan
  161. on mouseEnter
  162.   if the visible of window "Help" then tell window "help" to go to frame "synth6"
  163. end
  164.  
  165. on mouseLeave
  166.   if the visible of window "Help" then tell window "help" to go to frame "start"
  167. end
  168.  
  169.  
  170. on mouseDown
  171.   global gOn
  172.   global folderSynthList
  173.   
  174.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  175.   if gOn and not(the visible of sprite 76) and (folderSynthList <> []) and not(the visible of window "help") then
  176.     repeat while the mouseDown
  177.       set y = the mouseV
  178.       if y > 54 then set y = 54
  179.       if y < 9 then set y = 9
  180.       set the locV of sprite 46 to y
  181.       updateStage
  182.       
  183.       IKSynthPan integer(128*(-y+54)/45)
  184.     end repeat
  185.   end if
  186. end
  187.  
  188.  
  189. on mouseUp
  190.   global gOn,gPosPanSynth,gSynthSel
  191.   global folderSynthList
  192.   
  193.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  194.   if gOn and not(the visible of sprite 76) and (folderSynthList <> []) and not(the visible of window "help") then 
  195.     set gPosPanSynth = the locV of sprite 46
  196.     -- se c'√® l'hilite intorno ai marker sparisce
  197.     if gSynthSel then 
  198.       set the locH of sprite 74 to -20
  199.       set gSynthSel = 0
  200.     end if
  201.   end if
  202. end
  203. ****************************************************************
  204. -- click sul led rosso
  205. on mouseEnter
  206.   if the visible of window "Help" then tell window "help" to go to frame "synth11"
  207. end
  208.  
  209. on mouseLeave
  210.   if the visible of window "Help" then tell window "help" to go to frame "start"
  211. end
  212.  
  213. on mouseUp
  214.   clickLed
  215. end 
  216. ****************************************************************
  217. -- click sul led azzurro
  218. on mouseEnter
  219.   if the visible of window "Help" then tell window "help" to go to frame "synth11"
  220. end
  221.  
  222. on mouseLeave
  223.   if the visible of window "Help" then tell window "help" to go to frame "start"
  224. end
  225.  
  226.  
  227. on mouseUp
  228.   global gOn,gOnSynth,gSynthSel
  229.   global folderSynthList
  230.   
  231.   if gOn and (folderSynthList <> []) and not(the visible of window "help") then
  232.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  233.     if the visible of sprite 76 then
  234.       pass
  235.     else
  236.       -- √® acceso il led azzurro, diventa rosso e si mutano le note
  237.       
  238.       IKSynthStop
  239.       set the visible of sprite 3 to true
  240.       set gOnSynth = 0
  241.       
  242.       -- se c'√® l'hilite intorno ai marker sparisce
  243.       if gSynthSel then 
  244.         set the locH of sprite 74 to -20
  245.         set gSynthSel = 0
  246.       end if
  247.       
  248.     end if
  249.   end if
  250. end
  251. ****************************************************************
  252. -- click su close
  253. on mouseEnter
  254.   if the visible of window "Help" then tell window "help" to go to frame "synth10"
  255. end
  256.  
  257. on mouseLeave
  258.   if the visible of window "Help" then tell window "help" to go to frame "start"
  259. end
  260.  
  261.  
  262. on mouseDown
  263.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  264.   if not(the visible of sprite 76) and not(the visible of window "help") then
  265.     repeat while the mouseDown
  266.       set the memberNum of sprite 60 to the number of member "Hclose"
  267.       updateStage
  268.     end repeat
  269.   end if
  270. end 
  271.  
  272.  
  273. on mouseUp
  274.   
  275.   if not(the visible of window "help") then
  276.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  277.     if the visible of sprite 76 then
  278.       pass
  279.     else
  280.       set the memberNum of sprite 60 to the number of member "close"
  281.       updateStage
  282.       
  283.       close window "synth"
  284.     end if
  285.   end if
  286. end
  287. ****************************************************************
  288. -- click sul pulsante marker
  289. on mouseEnter
  290.   if the visible of window "Help" then tell window "help" to go to frame "synth5"
  291. end
  292.  
  293. on mouseLeave
  294.   if the visible of window "Help" then tell window "help" to go to frame "start"
  295. end
  296.  
  297.  
  298. on mouseDown
  299.   global gArp,gProg,gOn,gPosVolSynth,gPosPanSynth
  300.   global markerSynthList,synthList,paramList,folderSynthList
  301.   
  302.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  303.   if gOn and not(the visible of sprite 76) and (folderSynthList <> []) and not(the visible of window "help") then
  304.     -- prende il click se non abbiamo gi√† marcato 99 synth, se la seq che sta suonando non √® gi√† nella markerSynthList e/o se √® cambiata anche solo nei parametri
  305.     set temp = [field "fieldSynth",gArp,gProg,gPosVolSynth,gPosPanSynth]
  306.     if (synthList <> []) and (getLast(markerSynthList) <> synthList or getLast(paramList) <> temp) and (count(markerSynthList) < 99) then
  307.       repeat while the mouseDown
  308.         set the memberNum of sprite 61 to the number of member "Hmarker"
  309.         updateStage
  310.       end repeat
  311.     end if
  312.   end if
  313. end
  314.  
  315.  
  316.  
  317. on mouseUp    
  318.   markSynth  
  319. end
  320. ****************************************************************
  321. -- click sul pulsante save
  322. on mouseEnter
  323.   if the visible of window "Help" then tell window "help" to go to frame "synth4"
  324. end
  325.  
  326. on mouseLeave
  327.   if the visible of window "Help" then tell window "help" to go to frame "start"
  328. end
  329.  
  330.  
  331. on mouseDown
  332.   global gOn
  333.   global synthList,folderSynthList
  334.   
  335.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  336.   if gOn and not(the visible of sprite 76) and (synthList <> []) and (folderSynthList <> []) and not(the visible of window "help") then
  337.     repeat while the mouseDown
  338.       set the memberNum of sprite 62 to the number of member "Hsave"
  339.       updateStage
  340.     end repeat
  341.   end if
  342. end
  343.  
  344.  
  345. on mouseUp
  346.   global gArp,gProg,gPath,gOn,gPosVolSynth,gPosPanSynth,gWav,gSong
  347.   global synthList,synthSaveList,folderSynthList
  348.   
  349.   if gOn and (folderSynthList <> []) and not(the visible of window "help") then
  350.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  351.     if the visible of sprite 76 then
  352.       pass
  353.     else
  354.       if (synthList <> []) then
  355.         set the memberNum of sprite 62 to the number of member "save"
  356.         updateStage
  357.         
  358.         -- creo il file di testo con le informazioni relative al synth cha sta suonando, in pratica scrivo due righe, una con le informazioni che analoghe alla markerSynthList e l'altra analoga alla paramList
  359.         set testo = ""
  360.         -- prima riga
  361.         repeat with i = 1 to count(synthList)
  362.           set testo = testo & getAt(synthList,i) & " "
  363.         end repeat
  364.         set testo = testo & numToChar(13) & numToChar(10)
  365.         -- seconda riga
  366.         set testo = testo & field "fieldSynth" & " "
  367.         set testo = testo & gArp & " "
  368.         set testo = testo & gProg & " "
  369.         set testo = testo & gPosVolSynth & " "
  370.         set testo = testo & gPosPanSynth & " "
  371.         
  372.         -- ricavo il nome da dare al file in base a quelli gi√† presenti, li leggo nella synthSaveList
  373.         set trovato = 1
  374.         set i = 1
  375.         repeat while trovato
  376.           --          set nameFile = "synth" & i & ".txt"
  377.           set nameFile = "s" & chars(gSong,5,length(gSong)) & "_" & i & ".txt"
  378.           if getPos(synthSaveList,nameFile) then
  379.             set i = i+1
  380.           else
  381.             set trovato = 0
  382.           end if
  383.         end repeat
  384.         -- aggiorno la synthSaveList
  385.         append synthSaveList,nameFile
  386.         sort synthSaveList
  387.         -- creo il file
  388.         set myFile = new(xtra "fileio")
  389.         createFile(myFile,gPath & "synthM:" & gWav & ":" & nameFile)    
  390.         openFile(myFile,gPath & "synthM:" & gWav & ":" & nameFile,2)
  391.         writeString(myFile,testo)
  392.         closeFile(myFile)
  393.         set myFile = 0
  394.       end if
  395.     end if
  396.   end if
  397. end
  398. ****************************************************************
  399. -- click sul pulsante empty
  400. on mouseEnter
  401.   if the visible of window "Help" then tell window "help" to go to frame "synth13"
  402. end
  403.  
  404. on mouseLeave
  405.   if the visible of window "Help" then tell window "help" to go to frame "start"
  406. end
  407.  
  408.  
  409.  
  410. on mouseDown
  411.   global gOn
  412.   global synthList,folderSynthList
  413.   
  414.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  415.   if gOn and not(the visible of sprite 76) and (synthList <> []) and (folderSynthList <> []) and not(the visible of window "help") then
  416.     repeat while the mouseDown
  417.       set the memberNum of sprite 64 to the number of member "Hempty"
  418.       updateStage
  419.     end repeat
  420.   end if
  421. end
  422.  
  423.  
  424.  
  425. on mouseUp
  426.   global gOn
  427.   global synthList,folderSynthList
  428.   
  429.   if gOn and (folderSynthList <> []) and not(the visible of window "help") then
  430.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  431.     if the visible of sprite 76 then
  432.       pass
  433.     else
  434.       if synthList <> [] then
  435.         emptySynth
  436.       end if
  437.     end if
  438.   end if
  439. end
  440. ****************************************************************
  441. -- click sul pulsante load
  442. on mouseEnter
  443.   if the visible of window "Help" then tell window "help" to go to frame "synth3"
  444. end
  445.  
  446. on mouseLeave
  447.   if the visible of window "Help" then tell window "help" to go to frame "start"
  448. end
  449.  
  450.  
  451.  
  452. on mouseDown
  453.   global gOn
  454.   global synthSaveList,folderSynthList
  455.   
  456.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  457.   if gOn and not(the visible of sprite 76) and (folderSynthList <> []) and not(the visible of window "help") then
  458.     -- si apre solo se abbiamo salvato almeno un synth
  459.     if synthSaveList <> [] then
  460.       repeat while the mouseDown
  461.         set the memberNum of sprite 63 to the number of member "Hload"
  462.         updateStage
  463.       end repeat
  464.     end if
  465.   end if
  466. end
  467.  
  468.  
  469. on mouseUp
  470.   global gOn,gPath,gWav
  471.   global synthSaveList,folderSynthList
  472.   
  473.   if gOn and (folderSynthList <> []) and not(the visible of window "help") then
  474.     set the memberNum of sprite 63 to the number of member "load"
  475.     updateStage
  476.     
  477.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  478.     if the visible of sprite 76 then
  479.       pass
  480.     else
  481.       -- si apre solo se abbiamo salvato almeno un synth
  482.       if synthSaveList <> [] then
  483.         
  484.         -- aggiorno il fieldElencoSynthSalvati, mostro solo i synth che sono caricati in questo momento
  485.         put "" into field "fieldElencoSynthSalvati"
  486.         repeat with i = 1 to count(synthSaveList)
  487.           -- considero solo i synth salvati con la song caricata in questo momento
  488.           set tSynth = getAt(synthSaveList,i)
  489.           if chars(tSynth,2,offSet("_",tSynth)-1) = chars(gSong,5,length(gSong)) then
  490.             put chars(tSynth,1,length(tSynth)-4) & return after field "fieldElencoSynthSalvati"
  491.           end if
  492.         end repeat
  493.         set the scrollTop of member "fieldElencoSynthSalvati" to 0
  494.         
  495.         set the font of member "fieldElencoSynthSalvati" to "Helvetica"
  496.         set the fontSize of member "fieldElencoSynthSalvati" to 12
  497.         set the foreColor of member "fieldElencoSynthSalvati" to 0
  498.         
  499.         if field "fieldElencoSynthSalvati" <> "" then
  500.           
  501.           repeat with i = 76 to 79
  502.             set the visible of sprite i to true
  503.           end repeat
  504.         end if
  505.         
  506.       end if
  507.     end if
  508.   end if
  509. end
  510. ****************************************************************
  511. -- click sul pulsante del mix
  512. on mouseEnter
  513.   if the visible of window "Help" then tell window "help" to go to frame "synth9"
  514. end
  515.  
  516. on mouseLeave
  517.   if the visible of window "Help" then tell window "help" to go to frame "start"
  518. end
  519.  
  520.  
  521. on mouseDown
  522.   global gOnSynth
  523.   
  524.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  525.   if not (the visible of sprite 76) and not(the visible of window "help") and gOnSynth then
  526.     repeat while the mouseDown
  527.       set the memberNum of sprite 81 to the number of member "Hmix"
  528.       updateStage
  529.     end repeat
  530.     cursor 4
  531.   end if
  532. end
  533.  
  534.  
  535.  
  536.  
  537. on mouseUp
  538.   global gFolderMix,gOnSynth,gWav,gPath,gBpmSong,gPath,gArp,gPosVolSynth,gPosPanSynth,gProg
  539.   global virTrackList,volValList,panValList,stateTrackList,progList,arpList
  540.   
  541.   if not(the visible of window "help") then
  542.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  543.     if the visible of sprite 76 then
  544.       pass
  545.     else
  546.       if gOnSynth then
  547.         
  548.         -- nome del file
  549.         put directoryToList(gFolderMix) into tList
  550.         set trovato = 1
  551.         set j = 1
  552.         repeat while trovato
  553.           set nameFile = "synthMix" & j
  554.           if getPos(tList,nameFile) then
  555.             set  j = j + 1
  556.           else
  557.             set trovato = 0
  558.           end if
  559.         end repeat
  560.         
  561.         --        IKSynthStop
  562.         --        IKStop
  563.         
  564. --        case(gWav) of
  565. --          22: IKQualityFreq 22050
  566. --          44: IKQualityFreq 44100
  567. --        end case
  568.         
  569.         IKSynthMix(gFolderMix & nameFile)
  570.         
  571.         --        IKBegin "IKTRACK.X32 CTL3DV2.DLL"
  572. --        IKSetSongBpm gBpmSong
  573.         --        IKMasterVolume integer(field "fieldMasterVol")
  574. --        IKMixBPM float(field "fieldBpm")
  575.         --        repeat with i = 1 to 8
  576.         --          if getAt(virTrackList,i) <> -1 and getAt(stateTrackList,i) <> "off" and getAt(stateTrackList,i) <> "mute" then
  577.         --            IKVolume i,getAt(volValList,i)
  578.         --            IKPan i,getAt(panValList,i)
  579.         --            IKPlay i, getAt(virTrackList,i)
  580.         --          end if
  581.         --        end repeat
  582.         --        if field "fieldSynth" <> "" then IKSetSynth gPath & "synth:synth" & gWav & ":" & field "fieldSynth" & ":"
  583.         -- calcolo arp
  584.         --        case(getPos(arpList,gArp)) of
  585.         --          1,2,3,4:set arp = integer(chars(gArp,3,length(gArp)))/4
  586.         --          otherwise
  587.         --            set arp = 4
  588.         --        end case 
  589.         --        
  590.         --        -- vol e pan
  591.         --        IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  592.         --        IKSynthPan integer(128*(-gPosPanSynth+54)/45)
  593.         --        IKSynthArp getPos(progList,gProg)-1,arp,createSeq()
  594.         
  595.         set the memberNum of sprite 81 to the number of member "mix"
  596.         updateStage
  597.         
  598.       end if
  599.     end if
  600.   end if
  601.   cursor -1
  602. end
  603. ****************************************************************
  604. -- click sulla freccia left
  605. on mouseDown
  606.   global markerSynthList,folderSynthList
  607.   
  608.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  609.   if not(the visible of sprite 76) and (folderSynthList <> []) and not(the visible of window "help") then
  610.     -- funziona se abbiamo marcato pi√π di 8 synth e se il primo che si vede √® diverso da 1
  611.     if (count(markerSynthList) > 6) and (the name of member the memberNum of sprite 68 <> "1") then
  612.       repeat while the mouseDown
  613.         set the memberNum of sprite 65 to the number of member "Hleft"
  614.         updateStage
  615.       end repeat
  616.     end if
  617.   end if
  618. end
  619.  
  620. on mouseUp
  621.   global gFirstSynth,gLastSynth,gLastSprite,gSynthSel
  622.   global markerSynthList,folderSynthList
  623.   
  624.   if (folderSynthList <> []) and not(the visible of window "help") then
  625.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  626.     if the visible of sprite 76 then
  627.       pass
  628.     else
  629.       -- funziona se abbiamo marcato pi√π di 6 synth e se il primo che si vede √® diverso da 1
  630.       if (count(markerSynthList) > 6) and (the name of member the memberNum of sprite 68 <> "1") then
  631.         set the memberNum of sprite 65 to the number of member "left"
  632.         updateStage
  633.         
  634.         set gFirstSynth = gFirstSynth - 1
  635.         set nS = 67 
  636.         repeat with i = gFirstSynth to (gFirstSynth+5)
  637.           set nS = nS+1
  638.           set the memberNum of sprite nS to the number of member string(i)
  639.           updateStage
  640.         end repeat
  641.         
  642.         if gLastSprite = 73 then
  643.           set gLastSynth = gLastSynth - 1
  644.         else
  645.           set gLastSprite = gLastSprite + 1
  646.         end if
  647.         
  648.         -- controllo sull'hilite del marker (se c'√®)
  649.         if gSynthSel > gFirstSynth and gSynthSel < gLastSynth then 
  650.           set the locH of sprite 74 to (the locH of sprite 74) + 12
  651.         else
  652.           if gSynthSel = gFirstSynth then set the locH of sprite 74 to (the locH of sprite 68) + 1
  653.           else
  654.             if gSynthSel = gLastSynth then set the locH of sprite 74 to (the locH of sprite 73) + 1
  655.             else
  656.               set the locH of sprite 74 to -20
  657.             end if
  658.           end if
  659.         end if
  660.         
  661.       end if
  662.     end if
  663.   end if
  664. end
  665. ****************************************************************
  666. -- click sulla freccia right
  667. on mouseDown
  668.   global gLastSprite
  669.   global markerSynthList,folderSynthList
  670.   
  671.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  672.   if not(the visible of sprite 76) and (folderSynthList <> []) and not(the visible of window "help") then
  673.     -- funziona se l'ultimo synth che si vede √® diverso da gLastSynth
  674.     if (the name of member the memberNum of sprite gLastSprite <> string(count(markerSynthList))) and (count(markerSynthList) <> 0) then
  675.       repeat while the mouseDown
  676.         set the memberNum of sprite 66 to the number of member "Hright"
  677.         updateStage
  678.       end repeat
  679.     end if
  680.   end if
  681. end
  682.  
  683.  
  684.  
  685. on mouseUp
  686.   global gLastSynth,gFirstSynth,gLastSprite,gSynthSel
  687.   global markerSynthList,folderSynthList
  688.   
  689.   if (folderSynthList <> []) and not(the visible of window "help") then
  690.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  691.     if the visible of sprite 76 then
  692.       pass
  693.     else
  694.       -- funziona se l'ultimo synth che si vede √® diverso da gLastSynth
  695.       if (the name of member the memberNum of sprite gLastSprite <> string(count(markerSynthList))) and (count(markerSynthList) <> 0) then
  696.         set the memberNum of sprite 66 to the number of member "right"
  697.         updateStage
  698.         
  699.         set gFirstSynth = gFirstSynth + 1
  700.         set gLastSynth = gLastSynth + 1
  701.         set nS = 67
  702.         repeat with i = gFirstSynth to gLastSynth
  703.           set nS = nS + 1
  704.           set the memberNum of sprite ns to the number of member string(i)
  705.           updateStage
  706.         end repeat
  707.         
  708.         -- controllo sull'hilite del marker (se c'√®)
  709.         if gSynthSel > gFirstSynth and gSynthSel < gLastSynth then 
  710.           set the locH of sprite 74 to (the locH of sprite 74) - 12
  711.         else
  712.           if gSynthSel = gFirstSynth then set the locH of sprite 74 to (the locH of sprite 68) + 1
  713.           else
  714.             if gSynthSel = gLastSynth then set the locH of sprite 74 to (the locH of sprite 73) + 1
  715.             else
  716.               set the locH of sprite 74 to -20
  717.             end if
  718.           end if
  719.         end if
  720.       end if
  721.     end if
  722.   end if
  723. end
  724. ****************************************************************
  725. -- click sulla freccia up del fieldElencoSynthSalvati
  726. on mouseUp
  727.   if not(the visible of window "help") then scrollByLine member "fieldElencoSynthSalvati",-1
  728. end
  729. ****************************************************************
  730. -- click sulla freccia down del fieldElencoSynthSalvati
  731. on mouseUp
  732.   if not(the visible of window "help") then scrollByLine member "fieldElencoSynthSalvati",1
  733. end
  734. ****************************************************************
  735. -- click su un synth marcato
  736. -- con il tasto sinistro compare l'hilite e lo sentiamo
  737. -- con il tasto destro lo spostiamo
  738. on mouseEnter
  739.   if the visible of window "Help" then tell window "help" to go to frame "synth1"
  740. end
  741.  
  742. on mouseLeave
  743.   if the visible of window "Help" then tell window "help" to go to frame "start"
  744. end
  745.  
  746.  
  747.  
  748. on mouseDown
  749.   global gOn
  750.   
  751.   if (gOn) and not(the visible of sprite 76) and (char 1 of the name of member (the memberNum of sprite the clickOn) <> "m") and not(the visible of window "help") then
  752.     -- compare l'hilite intorno al numero
  753.     set the locH of sprite 74 to (the locH of sprite the clickOn) + 1
  754.   end if
  755. end
  756.  
  757.  
  758.  
  759. on mouseUp
  760.   global gOnSynth,gArp,gProg,gPath,gWav,gOn,gPosVolSynth,gPosPanSynth,gSynthSel
  761.   global synthList,markerSynthList,arpList,progList,paramList
  762.   
  763.   if gOn and not(the visible of window "help") then
  764.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  765.     if the visible of sprite 76 then
  766.       pass
  767.     else
  768.       -- funziona se ho cliccato in una zona con dentro un numero
  769.       if char 1 of the name of member (the memberNum of sprite the clickOn) <> "m" then
  770.         -- compare l'hilite intorno al numero
  771.         set gSynthSel = integer(the name of member the memberNum of sprite the clickOn)
  772.         
  773.         if not gOnSynth then set gOnSynth = 1
  774.         
  775.         set synthList = []
  776.         repeat with k = 1 to count(getAt(markerSynthList,integer(the name of member the memberNum of sprite the clickOn)))
  777.           append synthList,getAt(getAt(markerSynthList,integer(the name of member the memberNum of sprite the clickOn)),k)
  778.         end repeat
  779.         
  780.         -- hilite delle note
  781.         
  782.         -- se la nota compare sia nella synthList precedente che nella synthList attuale non succede niente
  783.         -- se la nota non compare nella synthList precedente e compare nella synthList attuale si accende l'hilite
  784.         -- se la nota compare nella synthList precedente e non compare nella synthList attuale si spegne l'hilite
  785.         repeat with i = 1 to 3
  786.           set start = 12*(i-1) + 3
  787.           repeat with j = 1 to 12
  788.             set nota = the name of member the memberNum of sprite (start + j) 
  789.             if char 1 of nota = "y" then
  790.               set nota = chars(nota,2,length(nota)) & i
  791.               if not getPos(synthList,nota) then 
  792.                 set nota = chars(nota,1,length(nota)-1)
  793.                 set the memberNum of sprite (start + j) to the number of member nota
  794.                 updatestage
  795.               end if
  796.               
  797.             else
  798.               set nota = nota & i
  799.               if getPos(synthList,nota) then 
  800.                 set nota = "y" & chars(nota,1,length(nota)-1) 
  801.                 set the memberNum of sprite (start+j) to the number of member nota
  802.                 updateStage
  803.               end if
  804.             end if
  805.           end repeat
  806.         end repeat
  807.         
  808.         set temp = getAt(paramList,integer(the name of member the memberNum of sprite the clickOn))
  809.         if field "fieldSynth" <> getAt(temp,1) then
  810.           IKSynthStop
  811.           put getAt(temp,1) into field "fieldSynth"
  812.           IKSetSynth gPath & "synth:synth" & gWav & ":" & field "fieldSynth" & ":"
  813.         end if
  814.         set gArp = getAt(temp,2)
  815.         set gProg = getAt(temp,3)
  816.         put getAt(temp,3) into field "fieldProg"
  817.         put getAt(temp,2) into field "fieldArp"
  818.         put getAt(temp,1) into field "fieldSynth"
  819.         set gPosVolSynth = getAt(temp,4)
  820.         set gPosPanSynth = getAt(temp,5)
  821.         
  822.         -- riposiziono il vol e il pan
  823.         set the locV of sprite 45 to gPosVolSynth
  824.         set the locV of sprite 46 to gPosPanSynth
  825.         updateStage
  826.         
  827.         -- aggiorno il play 
  828.         -- calcolo arp
  829.         case(getPos(arpList,gArp)) of
  830.           1,2,3,4:set arp = integer(chars(gArp,3,length(gArp)))/4
  831.           otherwise
  832.             set arp = 4
  833.         end case 
  834.         
  835.         -- vol e pan
  836.         IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  837.         IKSynthPan integer(128*(-gPosPanSynth+54)/45)
  838.         IKSynthArp getPos(progList,gProg)-1,arp,createSeq()         
  839.       end if
  840.       
  841.     end if
  842.   end if
  843. end
  844.  
  845.  
  846.  
  847. on rightMouseDown
  848.   global gOn,gSynthSel
  849.   global prima
  850.   
  851.   if gOn and not(the visible of sprite 76) then
  852.     
  853.     -- funziona se ho cliccato su una zona con dentro il numero e se il synth scelto non √® hilitato
  854.     if (char 1 of the name of member (the memberNum of sprite the clickOn) <> "m") and (gSynthSel <> integer(the name of member the memberNum of sprite the clickOn)) then
  855.       
  856.       set the memberNum of sprite 88 to the number of member (the memberNum of sprite the clickOn)
  857.       set the ink of sprite 88 to 36
  858.       set the visible of sprite the clickOn to false
  859.       
  860.       repeat while the mouseDown
  861.         set the locH of sprite 88 = the mouseH
  862.         set the locV of sprite 88 = the mouseV
  863.         updateStage
  864.       end repeat
  865.       
  866.     end if
  867.     
  868.     set prima = 0
  869.   end if
  870. end
  871.  
  872.  
  873. on rightMouseUp
  874.   global gOn,gFirstSynth,gLastSynth,gLastSprite,gSynthSel
  875.   global prima
  876.   global markerSynthList,posRectList,paramList
  877.   
  878.   if gOn and not(the visible of sprite 76) then
  879.     -- se non sono tornata nella posizione iniziale sparisce il synth dal visore e dalla markerSynthList
  880.     -- lo sprite torna comunque al suo posto
  881.     -- se il numero √® vicino alla posizione iniziale torna al suo posto
  882.     set prima = prima + 1
  883.     if prima = 1 then
  884.       set newPos = point(the mouseH,the mouseV)
  885.       -- numero √® il marker che sposto
  886.       put integer(the name of member (the memberNum of sprite the clickOn)) into numero
  887.       
  888.       if inside(newPos,getAt(getAt(posRectList,the clickOn - 67),2)) then 
  889.         set the loc of sprite the clickOn = getAt(getAt(posRectList,the clickOn - 67),1)
  890.         updateStage
  891.       else
  892.         -- se c'√® un marker con hilite ed √® pi√π grande del numero che ho spostato faccio shiftare l'hilite a sinistra di un posto
  893.         if gSynthSel > numero then
  894.           set gSynthSel = gSynthSel - 1
  895.           set the locH of sprite 74 to (the locH of sprite 74) - 12
  896.         end if
  897.         
  898.         deleteAt markerSynthList,numero
  899.         deleteAt paramList,numero
  900.         -- non si √® fermato vicino alla pos iniziale quindi scompare
  901.         -- si riposizionano i synth a visore
  902.         repeat with i = 68 to 73
  903.           set the memberNum of sprite i to the number of member "m"
  904.         end repeat
  905.         case(count(markerSynthList)) of
  906.           0:
  907.             set gLastSynth = 0
  908.             set gFirstSynth = 0
  909.             set gLastSprite = 67
  910.             
  911.           otherwise
  912.             if count(markerSynthList) < 6 then
  913.               repeat with i = 1 to count(markerSynthList)
  914.                 set the memberNum of sprite (67+i) to the number of member string(i)
  915.               end repeat
  916.               set gLastSprite = gLastSprite - 1
  917.             else
  918.               repeat with i = 6 down to 1
  919.                 set the memberNum of sprite (67+i) to the number of member string(count(markerSynthList)-6+i)
  920.               end repeat
  921.               set gLastSprite = 73
  922.             end if
  923.             set gFirstSynth = integer(the name of member the memberNum of sprite 68)
  924.             set gLastSynth = integer(the name of member the memberNum of sprite gLastSprite)
  925.         end case
  926.       end if
  927.       set the loc of sprite the clickOn = getAt(getAt(posRectList,the clickOn - 67),1)
  928.       updateStage
  929.     end if
  930.     set the visible of sprite the clickOn to true
  931.     set the memberNum of sprite 88 to 1000
  932.     updateStage
  933.   end if
  934. end
  935.  
  936.  
  937.  
  938.  
  939.